package hcn.protocol.registration;

import lombok.Data;

import java.util.List;

/**
 * @program: Myproject
 * @description: 查询患者列表入参vo
 * @author: zangsf
 * @create: 2022-06-10 01:06
 **/
@Data
public class QueryPatientListVO {
    /**
     * 区域内患者唯一标识
     */
    private String MPI;
    /**
     * 业务系统患者档案ID
     * 业务系统内部患者档案的唯一编号，考虑各业务系统通用，门诊档案填门诊号码，住院档案填住院号
     */
    private String sourcePatientId;
    /**
     * 业务系统患者档案类型
     * 标识病人在业务系统内的档案类型。枚举值：OV:门诊档案 IV:住院档案 HV:体检档案 LG:留观档案 TV:其他档案
     */
    private String sourcePatientIdType;
    /**
     * 建档机构代码
     * 经《医疗机构执业许可证》登记的，并按照特定编码体系填写的代码WS_218
     */
    private String authorOrganization;
    /**
     * 建档机构名称
     */
    private String authorOrganizationName;
    private String idCardCode;
    private String idCard;
    /**
     * 医疗保险类别代码
     * 患者本人参加的医疗保险的类别在特定编码体系中的代 码CV02_01_204
     */
    private String medicalInsuranceCategoryCode;
    private List<MedicalCardInfo> medicalCardInfos;
    /**
     * 建卡（更新）日期时间
     */
    private String effectiveTime;
    /**
     * 患者姓名
     */
    private String name;
    /**
     * 性别代码
     */
    private String sex;
    /**
     * 年龄
     */
    private String age;
    /**
     * 出生日期
     */
    private String birthDate;
    /**
     * 婚姻状况代码
     * 表示患者当前婚姻状况的代码GB_T2261_2
     */
    private String maritalStatus;
    /**
     * 民族
     * 表示患者所属民族类别在特定编码体系中的代码GB_T3304
     */
    private String ethnicGroup;
    /**
     * 职业类别代码
     * 标识患者当前的从业状况的代码GB_T2261_4
     */
    private String occupationCategoryCode;
    /**
     * 患者电话号码
     * 患者联系电话的号码，包括国际、国内区号和分机号
     */
    private String patientPhone;
    /**
     * 工作单位名称
     * 本人或联系人当前工作单位的组织机构名称
     */
    private String workUnit;
    /**
     * 工作单位电话号码
     * 指患者当前工作单位的联系电话号码，包括国际、国内区号和分机号
     */
    private String workAddrPhone;
    /**
     * 建卡者代码
     * 医疗机构职工在特定编码体系中的编码CU_Personnel
     */
    private String authorId;
    /**
     * 建卡者姓名
     * 首次为患者建立电子病历者在公安户籍管理部门正式登记注册的姓氏和名称
     */
    private String author;
    /**
     * 地址
     */
    private Address address;
    /**
     * 联系方式
     */
    private Contact contact;

    @Data
    public static class MedicalCardInfo {
        /**
         * 就诊卡类别代码
         */
        private String medicalCardType;
        /**
         * 就诊卡号
         */
        private String medicalCardId;
        /**
         * 就诊卡的状态
         * 就诊卡的状态，其中active-激活；作废-disable；退卡-retired
         */
        private String MmdicalCardStatus;

    }

    @Data
    public static class Address {
        /**
         * 地址全称（非结构化）
         */
        private String addressDetail;
        /**
         * 地址-省（自治区、直辖市）
         * 患者本人或联系人地址中的省、自治区或直辖市名称GB_T2260
         */
        private String province;
        /**
         * 患者本人或联系人地址中的市、地区或州的名称GB_T2260
         */
        private String city;
        /**
         * 患者本人或联系人地址中的县（区）的名称GB_T2260
         */
        private String county;
        /**
         * 患者本人或联系人地址中的乡、镇或城市的街道办事处名称
         */
        private String town;
        /**
         * 患者本人或联系人地址中的村或城市的街、路、里、弄等名称
         */
        private String village;
        /**
         * 患者本人或联系人地址中的门牌号码
         */
        private String houseNumber;
        /**
         * 由阿拉伯数字组成，用来表示与地址对应的邮局及其投递区域的邮政通信代号
         */
        private String postalCode;
    }

    @Data
    public static class Contact {
        /**
         * 指联系人与患者之间的关系代码GB_T4761
         */
        private String relationShipWithPatient;
        /**
         * 联系人在公安户籍管理部门正式登记注册的姓氏和名称
         */
        private String contactPerson;
        /**
         * 指联系人的联系电话号码，包括国际、国内区号和分机号
         */
        private String contactPersonTel;
        /**
         * 监护人电话号码
         */
        private String guardianMobile;
        /**
         * 监护人身份证件号码
         */
        private String guardianIdCardId;
        /**
         * 监护人身份证件类别代码
         */
        private String guardianIdCardType;
        /**
         * 监护人姓名
         */
        private String guardianName;
    }
}
